package com.unknowpupil.cloud.provider.account.service.callback;

import com.unknowpupil.cloud.provider.account.domain.UnAccount;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 用户服务熔断器。 需要配合要被调用的方法
 * @Classname: UnAccountServiceCallback
 * @Author: <a> w10g </a>
 * @CreateDate: Create in 2020/1/5 15:02
 * @Description:  熔断限流通常是放在一起的。比如限流，只允许1秒钟访问一次如果超过多出来的请求就通过熔断降级的方式i返回固定结果减轻服务压力 这样代码就得写在提供者身上，不想springcloud写在客户端消费者身上
 * @Version: 1.0
 */
public class UnAccountServiceCallback {

    private static final Logger logger = LoggerFactory.getLogger(UnAccountServiceCallback.class);

    /**
     * 熔断方法
     *
     * @param username {@code String} 用户名
     * @param ex       {@code Throwable} 异常信息
     * @return {@link UnAccount} 熔断后的固定结果
     */
    public static UnAccount getByUsernameFallback(String username, Throwable ex) {
        logger.warn("Invoke getByUsernameFallback: " + ex.getClass().getTypeName());
        ex.printStackTrace();
        return null;
    }
}
